package com.doubao.device.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doubao.device.entity.SmartDevice;
import com.doubao.device.entity.UserDeviceCollection;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 用户收藏智能体Mapper
 */
@Mapper
public interface UserDeviceCollectionMapper extends BaseMapper<UserDeviceCollection> {

    /**
     * 检查用户是否已收藏智能体
     *
     * @param userId   用户ID
     * @param deviceId 智能体ID
     * @return 收藏记录数量
     */
    int checkIsCollected(@Param("userId") Long userId, @Param("deviceId") Long deviceId);

    /**
     * 删除用户收藏记录
     *
     * @param userId   用户ID
     * @param deviceId 智能体ID
     * @return 影响行数
     */
    int deleteByUserIdAndDeviceId(@Param("userId") Long userId, @Param("deviceId") Long deviceId);

    /**
     * 分页查询用户收藏的智能体
     *
     * @param page   分页参数
     * @param userId 用户ID
     * @return 智能体分页列表
     */
    IPage<SmartDevice> selectUserCollections(Page<SmartDevice> page, @Param("userId") Long userId);

    /**
     * 优化的查询方法 - 一次性查询智能体及相关信息
     *
     * @param page   分页参数
     * @param userId 用户ID
     * @return 智能体分页列表（包含扩展信息）
     */
    IPage<SmartDevice> selectUserCollectionsWithDetails(Page<SmartDevice> page, @Param("userId") Long userId);

}